home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue59 / ALFRESCO / Project1.dpr < prev    next >
Encoding:
Text File  |  2000-06-05  |  3.5 KB  |  206 lines

  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   Windows,
  7.   SysUtils,
  8.   AAWidWrd in 'AAWidWrd.pas';
  9.  
  10.  
  11. var
  12.   x : TaaWideWord;
  13.   y : TaaWideWord;
  14.   z : TaaWideWord;
  15.   i : integer;
  16.   j : integer;
  17.   Rem : TaaWideWord;
  18.   Start : DWORD;
  19. begin
  20.   writeln('zero');
  21.   x := TaaWideWord.Create;
  22.   x.Print;
  23.  
  24.   writeln('add 1 to 0 to give 1');
  25.   x.SetToZero;
  26.   y := TaaWideWord.Create;
  27.   y.Assign(1);
  28.   x.Add(y);
  29.   x.Print;
  30.  
  31.   (*
  32.   writeln('increment a few more times');
  33.   for i := 1 to 257 do begin
  34.     aaWWInc(x);
  35.     aaWWPrint(x);
  36.   end;
  37.   *)
  38.  
  39.   writeln('subtract 1 from 1 to give 0');
  40.   x.Subtract(y);
  41.   x.Print;
  42.  
  43.   writeln('subtract 12345678 from 87654321');
  44.   x.Assign(87654321);
  45.   write('x:   ');
  46.   x.Print;
  47.   y.Assign(12345678);
  48.   write('y:   ');
  49.   y.Print;
  50.   x.Subtract(y);
  51.   write('x-y: ');
  52.   x.Print;
  53.  
  54.   writeln('multiply 12345678 by 12345678');
  55.   x.Assign(y);
  56.   x.Multiply(y);
  57.   write('x*y: ');
  58.   x.Print;
  59.  
  60.   writeln('multiply 87654321 by 12345678');
  61.   x.Assign(87654321);
  62.   write('x:   ');
  63.   x.Print;
  64.   y.Assign(12345678);
  65.   write('y:   ');
  66.   y.Print;
  67.   x.Multiply(y);
  68.   write('x*y: ');
  69.   x.Print;
  70.  
  71.   writeln('divide previous result by 12345678');
  72.   z := TaaWideWord.Create;
  73.   x.Divide(y, z);
  74.   x.Print;
  75.   z.Print;
  76.  
  77.   writeln('divide previous result by 1234');
  78.   y.Assign(1234);
  79.   x.Divide(y, z);
  80.   x.Print;
  81.   z.Print;
  82.  
  83.   writeln('test');
  84.   x.Assign(65736);
  85.   write('x:   ');
  86.   x.Print;
  87.   y.Assign(190);
  88.   write('y:   ');
  89.   y.Print;
  90.   x.Divide(y, z);
  91.   write('x/y: ');
  92.   x.Print;
  93.   write('x mod y: ');
  94.   z.Print;
  95.   readln;
  96.  
  97.   writeln('test');
  98.   x.Assign(22338);
  99.   write('x:   ');
  100.   x.Print;
  101.   x.Multiply(x);
  102.   write('x*x:   ');
  103.   x.Print;
  104.   y.Assign(48731);
  105.   write('y:   ');
  106.   y.Print;
  107.   x.Divide(y, z);
  108.   write('x/y: ');
  109.   x.Print;
  110.   write('x mod y: ');
  111.   z.Print;
  112.   readln;
  113.  
  114.   writeln('test');
  115.   x.Assign(6125);
  116.   write('x:   ');
  117.   x.Print;
  118.   x.Multiply(x);
  119.   write('x*x:   ');
  120.   x.Print;
  121.   y.Assign(48851);
  122.   write('y:   ');
  123.   y.Print;
  124.   x.Divide(y, z);
  125.   write('x/y: ');
  126.   x.Print;
  127.   write('x mod y: ');
  128.   z.Print;
  129.   readln;
  130.  
  131.   (*
  132.   writeln('testing for primes');
  133.   x.assign(48679);
  134.   for i := 1 to 1000 do begin
  135.     if (x.IsPrime) then begin
  136.       write('A prime: ', x.AsInteger);
  137.       readln;
  138.     end;
  139.     x.AddOne;
  140.     x.AddOne;
  141.   end;
  142.   *)
  143.  
  144.   {generate random prime}
  145.   Randomize;
  146.   x.RandomPrime(256);
  147.   write('Prime: ');
  148.   x.Print;
  149.   x.SubOne;
  150.   if x.IsDivBy3 then
  151.     writeln('p-1 is divisible by 3')
  152.   else
  153.     writeln('p-1 is not divisible by 3');
  154.  
  155.   Randomize;
  156.   x.RandomRSAPrime(256);
  157.   writeln('RSA prime: ');
  158.   x.Print;
  159.   readln;
  160.  
  161.   writeln('starting timing test...');
  162.   Start := GetTickCount;
  163.   for i := 1 to 10 do begin
  164.     x.RandomRSAPrime(256)TaaWideWord.;
  165.   end;
  166.   writeln(GetTickCount - Start);
  167.  
  168.  
  169.   readln;
  170.   readln;
  171.   
  172.   writeln('loop test');
  173.   Rem := TaaWideWord.Create;
  174.   z.Assign(987654321);
  175.   j := 123;
  176.   for i := 1 to 1000000 do begin
  177.     x.Assign(z);
  178.     y.Assign(j);
  179.     x.Multiply(y);
  180.     x.AddOne;
  181.     if (i mod 1000) = 0 then
  182.       x.print;
  183.     x.Divide(y, Rem);
  184.     if (x.Compare(z) <> 0) or (not Rem.isOne) then
  185.       writeln('error');
  186.     inc(j, 1024);
  187.   end;
  188.   writeln('done');
  189.  
  190.  
  191.   (*
  192.   for i := 1 to 4999 do begin
  193.     write(i:5);
  194.     aaWWCvtFromInt(i*7, x);
  195.     for j := 1 to 4999 do begin
  196.       aaWWCvtFromInt(j*11, y);
  197.       aaWWMultiply(x, y, z, t);
  198.       if (aaWWCvtToInt(z) <> (i*j*77)) then
  199.         write('error');
  200.     end;
  201.   end;
  202.   *)
  203.   readln;
  204. end.
  205.  
  206.